#ifndef STUDENT_H
#define STUDENT_H
#include <QString>
#include <QStringList>
#include <QStandardItemModel>
#include "person.h"
#include "file.h"
#include "course.h"
#include "modelset.h"
#include "managementstudent.h"
#include "ui_loginwidget.h"
#include <QList>
#include <QDebug>

class student:public person,public studentManagement
{
public:
    //构造函数
    student();
    //设置信息
    void setInfo(QString name,QString id,QString grade,QString stuclass,QString college,QString major,QString password,QStringList course);
    //加载相关信息
    void loadAboutInfo();
    //设置成绩
    void setScore(QString name,QString id,QStringList score);
    //返回学院
    QString getCollege() const;
    //返回选课代码
    QStringList getSelectedCourse() const;
    //返回学生的基本信息
    QStringList getAllInfo() const;
    //返回学生加权平均分
    QString getAvg();
    //派生类返回派生类对象指针
    virtual student* next();

    //学生管理类实例化

    //添加课程选课代码到学生信息中
    virtual void addCourse(QString id);
    //移除学生信息中的选课代码
    virtual void removeCourse(QString id);
    //选课
    virtual bool selectCourse(QString courseSelectId,QString courseName,QString courseTime);
    //退课
    virtual bool giveUpCourse(QString courseSelectId);
    //查看所有课程
    virtual void checkAllCourse(QStandardItemModel *model);
    //查看我的课程
    virtual void checkMyCourse(QStandardItemModel *model);
    //查看我的成绩
    virtual void checkMyScore(QStandardItemModel *model, int curRow)const;
    //查看我的信息
    virtual void checkMyInfo(QStandardItemModel *model,int curRow) const;
    //修改密码
    virtual bool modifyPassword(QString oldPassword,QString newPassword);
    //保存当前的信息到文件中
    virtual void saveAllInfo();
    //以选课编号匹配课程
    virtual course& matchCourseWithId(const QString courseSelectId,QVector<course> &course);

private:
    QString stuGrade;//增加学生类年级信息
    QString stuClass;//增加学生类班级信息
    QString stuCollege;//增加学生类学院信息
    QString stuMajor;//增加学生类专业信息
    QString stuPassword;//增加学生类密码信息
    QStringList stuScore;//增加学生类成绩信息
    QStringList stuCourse;//增加学生类已选课程信息
    QVector<course> allCourse;
    QList<course> myCourse;
    //QVector<student> allScore;

};
#endif // STUDENT_H
